home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / amiga utilities / graphics / display / mpega / src / aiff.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-11-20  |  2.5 KB  |  105 lines

  1. /*------------------------------------------------------------------------------
  2.  
  3.     File    :    AIFF.h
  4.  
  5.     Author  :    Stéphane TAVENARD
  6.  
  7.     $VER:   AIFF.h  1.0  (23/06/1995)
  8.  
  9.     (C) Copyright 1995-1995 Stéphane TAVENARD
  10.     All Rights Reserved
  11.  
  12.     #Rev|   Date   |              Comment
  13.     ----|----------|--------------------------------------------------------
  14.     0    |05/06/1995| Initial revision from file common.h of
  15.     |       | MPEG/audio software simulation group          ST
  16.     1    |23/06/1995| Aminet release                      ST
  17.  
  18.     ------------------------------------------------------------------------
  19.  
  20.     AIFF definitions and utilities
  21.  
  22. ------------------------------------------------------------------------------*/
  23.  
  24. #ifndef AIFF_H
  25. #define AIFF_H
  26.  
  27. /* AIFF Definitions */
  28.  
  29. #define MAKE_ID(a,b,c,d) ((a<<24)|(b<<16)|(c<<8)|(d))
  30.  
  31. #define IFF_ID_FORM MAKE_ID( 'F','O','R','M' )
  32. #define IFF_ID_AIFF MAKE_ID( 'A','I','F','F' )
  33. #define IFF_ID_COMM MAKE_ID( 'C','O','M','M' )
  34. #define IFF_ID_SSND MAKE_ID( 'S','S','N','D' )
  35. #define IFF_ID_MPEG MAKE_ID( 'M','P','E','G' )
  36.  
  37. #define MIN(A, B) ((A) < (B) ? (A) : (B))
  38. #define MAX(A, B) ((A) > (B) ? (A) : (B))
  39.  
  40. /* Double and SANE Floating Point Type Definitions */
  41.  
  42. typedef struct    IEEE_DBL_struct {
  43.     unsigned long   hi;
  44.     unsigned long   lo;
  45. } IEEE_DBL;
  46.  
  47. typedef struct    SANE_EXT_struct {
  48.     unsigned long   l1;
  49.     unsigned long   l2;
  50.     unsigned short  s1;
  51. } SANE_EXT;
  52.  
  53. /* AIFF Type Definitions */
  54.  
  55. typedef long ID;
  56.  
  57. typedef struct    ChunkHeader_struct {
  58.     ID        ckID;
  59.     long    ckSize;
  60. } ChunkHeader;
  61.  
  62. typedef struct    Chunk_struct {
  63.     ID        ckID;
  64.     long    ckSize;
  65.     ID        formType;
  66. } Chunk;
  67.  
  68. typedef struct    CommonChunk_struct {
  69.     ID            ckID;
  70.     long        ckSize;
  71.     short        numChannels;
  72.     unsigned long   numSampleFrames;
  73.     short        sampleSize;
  74.     char        sampleRate[10];
  75. } CommonChunk;
  76.  
  77. typedef struct    SoundDataChunk_struct {
  78.     ID            ckID;
  79.     long        ckSize;
  80.     unsigned long   offset;
  81.     unsigned long   blockSize;
  82. } SoundDataChunk;
  83.  
  84. typedef struct    blockAlign_struct {
  85.     unsigned long   offset;
  86.     unsigned long   blockSize;
  87. } blockAlign;
  88.  
  89. typedef struct    IFF_AIFF_struct {
  90.     short        numChannels;
  91.     unsigned long   numSampleFrames;
  92.     short        sampleSize;
  93.     double        sampleRate;
  94.     unsigned long   sampleType;
  95.     blockAlign        blkAlgn;
  96. } IFF_AIFF;
  97.  
  98.  
  99. int AIFF_read_headers( FILE *file_ptr, IFF_AIFF *aiff_ptr );
  100. int AIFF_seek_to_sound_data( FILE *file_ptr );
  101. int AIFF_write_headers( FILE *file_ptr, IFF_AIFF *aiff_ptr );
  102.  
  103.  
  104. #endif /* AIFF_H */
  105.